<?php

namespace app\admin\controller;

use think\Controller;
use think\Db;

class Test extends Controller
{
    public function index()
    {
//        2.1. 快捷查询
//        $row = Db::name('user')
////            ->where('id', '5')
////            ->where('id', '=', 5)
////            ->where('id', '<=', 5)
//            ->where('id', 'in', [1,3,5])
//            ->select();
//
//        $row = Db::name('user')
//            ->where('age', '>', 18)
//            ->where('name', 'like', '%王%')
//            ->select();

//        $row = Db::name('user')
//            ->where(['sex'=>'0'])
//            ->whereor(['province'=>'上海'])
//            ->select();

//        2.2. 批量查询
//        $row = Db::name('user')
//            ->where([
//                'id' => ['between', '10,20'],
//                'sex' => ['eq', '0']
//            ])
//            ->select();

//        $row = Db::name('user')
//            ->where('sex', 'eq', '0')
//            ->where('id', ['between', '1,3'], ['in', [6,66,666,6666]], 'or')
//            ->select();
//        2.3. 区间查询
//        $row = Db::name('user')
//            ->where('id', ['>', 2], ['<', 15])
//            ->select();

//        2.4. 多表查询
//            1). 手动多表
//            $row = Db::field('u.name uname, l.name lname')
//                ->table(['user'=>'u', 'lover'=>'l'])
//                ->where('u.id=l.user_id')
//                ->select();
//            2). JOIN
//            $row = Db::table('user')
//                ->alias('u')
//                ->field(['u.name'=>'uname', 'l.name'=>'lname'])
//                ->join('lover l', 'u.id=l.user_id')
////                ->join('lover l', 'u.id=l.user_id', 'RIGHT')
//                ->order('uname')
//                ->select();
//            3). 视图
//            $row = Db::view('user', ['name'=>'uname'])
//                ->view('lover', ['name'=>'lname'], 'user.id = lover.user_id')
//                ->select();
//        2.5. 聚合查询
//            $row = Db::table('user')->avg('age');
//            $row = Db::table('user')
//                ->field('province, count(id)')
//                ->group('province')
//                ->select();
//            $row = Db::table('user')
//                ->field('province, group_concat(name)')
//                ->group('province')
//                ->select();
//        2.6. 子查询
//            1.fetchSql 方式
//            $query= Db::table('hc_user')
//                ->field('id,name,sex,age')
//                ->where('sex', 'eq', 0)
//                ->fetchSql(true)
//                ->select();  // 直接返回SQL,执行
////            var_dump($query);
//            $row = Db::table('('.$query.') u')
//                ->where('u.age', 'gt', '18')
//                ->order('id', 'desc')
//                ->select();
//        $sql = "SELECT * FROM (SELECT `id`,`name`,`sex`,`age` FROM `hc_user` WHERE `sex` = 0) u WHERE `u`.`age` > '18' ORDER BY `id` desc";

//            2.buildSql 方式
            $query= Db::table('hc_user')
                ->field('id,name,sex,age')
                ->where('sex', 'eq', 0)
                ->buildSql();
//            var_dump($query);
            $row = Db::table($query.' u')
                ->where('u.age', 'lt', '18')
                ->order('id', 'desc')
                ->select();
            var_dump($row);
    }

    public function sw()
    {
//        // 自动控制事务提交
//        Db::transaction(function(){
//            $userdata = ['name'=>'班长', 'age'=>'35', 'sex'=>'1'];
//            $id = Db::table('user')->insertGetId($userdata);
//            var_dump('用户ID: ' . $id);
//
//            $loverdata = ['name'=>'翠花', 'sex'=>'2', 'user_id'=> $id];
//            Db::table('lover')->insert($loverdata);
//
//            echo '关系建立完成!!';
//        });

        // 手动控制事务
        Db::startTrans();
        try{
            $userdata = ['name'=>'刘泽清', 'age'=>'38', 'sex'=>'2'];
            $id = Db::table('user')->insertGetId($userdata);
            var_dump('用户ID: ' . $id);

            $loverdata = ['name'=>'酸菜', 'sex'=>'0', 'user_id'=> $id];
            Db::table('lover')->insert($loverdata);

            echo '关系建立完成!!';

            // 提交事务
            Db::commit();
        } catch (\Exception $e) {
            // 回滚事务
            Db::rollback();
        }



    }

}
